
# 可变参数 ：
"""
说明 ：
1. 参数的数量可以发生变化
2. 参数名定义时有两种方式 ，
    1） ：列表形式的可变化参数 ：在参数名前加一个*  ,接受进来的参数都放在了一个元组内
    2） : 字典形式的可变化参数 ： 在参数名加两个*
"""


# 1. 案例 ：实现一个加法的函数 ，可以接受任意个数量相加。
def add(*args):
    print("args:",args)         # args : 是一个元组
    total = sum(args)
    return total

print(add(5))
print(add(3,4))
print(add(8,4))
print(add(8,4,1))
print(add(8,4,1,5))
print(add(8,4,1,5,7))
print(add(8,*(7,22,35,1,2)))    # 传递的是元组的数据
print(add(8,*[2,3,56,74,2]))
#print(add(8,(7,22,35,1,2)))     # 传递的是元组


# 2. 案例 ：实现一个加法的函数 ，可以接受任意个数量相加。
def add1(**kwargs):
    print("kwargs:",kwargs)         # kwargs : 是一个字典
    total = 0
    for x in kwargs.values():
        total += x
    return total

dt = {'m':7,'n':8}
print(add1(x=3,y=4))
print(add1(x=3,y=4,z=5,a=8,b=1))
print(add1(**dt))